// 计算百分比，两位小数
import {isExternal} from "@/utils/validate";

export function formatPercent(num1, num2){
    return (parseFloat(num1) / parseFloat(num2)).toFixed(2) + '%'
}
// 处理文件地址
export function formatFileUrl(url){
    if(isEmpty(url)){
        return url
    }

    if(isExternal(url)){
        return url
    }

    return import.meta.env.VITE_APP_BASE_URL + url
}


/**
 * 字符串替换
 * @param {string} str
 * @param {string} s1
 * @param {string} s2
 * @return string
 * */
export function replaceAll(str, s1, s2){
    if(isEmpty(str)){
        return str
    }
    return str.split(s1).join(s2)
}


export function isJsonString(str){
    if (typeof str == 'string') {
        try {
            const obj=JSON.parse(str);
            if(typeof obj == 'object' && obj ){
                return true;
            }else{
                return false;
            }

        } catch(e) {
            return false;
        }
    }

    return false
}

/**
 * 是否为空
 * @param {any} val
 * @return boolean
 * */
export function isEmpty(val){
    if(val === undefined){
        return true
    }

    if(val === null){
        return true
    }

    if (typeof val === 'boolean') return !val;

    if (typeof val === 'number') return !val;

    if (val instanceof Error) return val.message === '';

    switch (Object.prototype.toString.call(val)) {
        // String or Array
        case '[object String]':
        case '[object Array]':
            return !val.length;

        // Map or Set or File
        case '[object File]':
        case '[object Map]':
        case '[object Set]': {
            return !val.size;
        }
        // Plain Object
        case '[object Object]': {
            return !Object.keys(val).length;
        }
    }

    return false
}

/**
 * 数组去重
 * @param {array} list
 * @return any[]
 */
export function unique(list){
    return [...new Set(list)]; //利用了Set结构不能接收重复数据的特点
}
